<?php
require('includes/simple_html_dom.php');
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
error_reporting(0);
print_speiseplan();

/**
 * Gibt den Speiseplan für den heutigen Tag aus
 */
function print_speiseplan() {
	try {
		$text = extract_text();		   // extrahieren
		$text = normalize_text($text); // normalisieren
		$text = format_text($text);	   // formatieren
		
		$datum = sprintf("<b>%s</b><br />", date("l, d.m."));
		echo strlen($text) ? $datum . $text : $datum . "n/a";
	}
	catch (Exception $e) {
		echo $e->getMessage();
	}
}

/**
 * Extrahiert den Speiseplan aus der Website
 */
function extract_text() {
	$speiseplan = file_get_dom('http://d1.ivfr.de/kunden/sic/solarcasino.nsf');		
	foreach($speiseplan->find('table tr table tr') as $tag) {	
		for ($i = 0; $i < count($tag->children()); $i++) {
			$text = $tag->children($i)->plaintext;
			if (strpos($text, date('d.m.'))) {
				$text = $tag->children($i + 1)->plaintext;
				return $text;
			}
		}
	}
}

/**
 * Normalisiert den Speiseplan von der Website
 */
function normalize_text($text) {
	$text = utf8_encode($text);
	$text = preg_replace("/\s+/", " ", $text);
	$text = trim($text);
	return $text;
}

/**
 * Formatiert den Speiseplan von der Website
 */
function format_text($text) {
	$needle = " Vegetarisch ";
	
	// ist vegetarisches Gericht vorhanden?
	if ($pos = strpos($text, $needle)) {
		return sprintf("%s<br /><br />%s",
			substr($text, 0, $pos),
			substr($text, $pos + strlen($needle)));
	}
	
	// keine Daten oder unbekannter Zustand
	return $text;
}
?>
